home *** CD-ROM | disk | FTP | other *** search
/ Aminet 32 / Aminet 32 (1999)(Schatztruhe)[!][Aug 1999].iso / Aminet / comm / ums / UMS11_9_beta.lha / UMS / rexx / ReadMessage.rexx < prev    next >
OS/2 REXX Batch file  |  1995-11-11  |  4KB  |  154 lines

  1. /* ------------------------------------------------------------------------
  2.    :Program.    ReadMessage.rexx
  3.    :Contents.   reads a message from UMS' messagebase
  4.    :Author.     Kai Bolay [kai]
  5.    :Address.    Hoffmannstraße 168
  6.    :Address.    D-71229 Leonberg
  7.    :EMail.      kai@studbox.uni-stuttgart.de
  8.    :Version.    $VER: ReadMessage.rexx 2.2 (11.11.95)
  9.    :Copyright.  Public Domain
  10.    :Language.   ARexx
  11.    :Translator. RexxMast
  12.    
  13. $Id: ReadMessage.rexx 2.2 1995/11/11 11:55:40 kai Exp $   
  14. $Log: ReadMessage.rexx $
  15. # Revision 2.2  1995/11/11  11:55:40  kai
  16. # started RCS. Old history:
  17. # v1.0 [kai] 23-Sep-93
  18. # v1.1 [hG]  16-Jan-94  added arguments parsing,
  19. #                       added option NoUpdate
  20. # V1.2 [hG]  20-Jan-94  shows user/global status textual
  21. # v1.3 [hG]  23-Jan-94  uses UMSInit.rexx 1.1
  22. #                       hgRexxSupport.library
  23. # v2.0 [kai] 21-Dec-94  adapted to UMS v11
  24. # v2.1 [kai] 14-Apr-95  beautified and new flags
  25. # v2.2 [kai] 11-Nov-95  adapted to newest standard
  26. #
  27.  
  28. ------------------------------------------------------------------------ */
  29.  
  30. options results
  31.  
  32. signal on BREAK_C
  33. signal on BREAK_D
  34. signal on BREAK_E
  35. signal on BREAK_F
  36. signal on HALT
  37. signal on ERROR
  38. signal on IOERR
  39. signal on SYNTAX
  40.  
  41. /*** Init ***/
  42.  
  43. call addlib("rexxdossupport.library", 0, -30)
  44. call addlib("ums.library", 0, -210, 11)
  45. call UMSInitConsts()
  46.  
  47. /*** Arguments ***/
  48.  
  49. parse SOURCE . " " . " " ProgramName .
  50. ArgsTemplate = "NAME,PASSWORD,NUM/A/N,SERVER/K,NOUPDATE/S"
  51. args.SERVER = ""
  52. args.PASSWORD = ""
  53.  
  54. parse arg arguments
  55. if strip(arguments) = '?' then do
  56.   call writech(STDOUT, ArgsTemplate || ': ')
  57.   arguments = readln(STDIN)
  58. end; else nop
  59. if ~ReadArgs(arguments,ArgsTemplate,"args.") then do
  60.   say Fault(RC, ProgramName)
  61.   exit 10
  62. end; else nop
  63.  
  64. /*** Login ***/
  65.  
  66. account = UMSLogin(args.name, args.password, args.server)
  67. if account = 0 then do
  68.   say "unable to login."
  69.   exit 10
  70. end
  71.  
  72. /*** Do the magic ***/
  73.  
  74. drop msg. /* _IMPORTANT_ */
  75. if UMSReadMsgAll(account, args.num, msg., args.NoUpdate) then do
  76.   say "Message #" || args.num
  77.   do field = 0 to UMSNUMFIELDS
  78.     if symbol("msg." || field) = "VAR" then do
  79.       say "Field #" || field || ": '" || msg.field || "'"
  80.     end
  81.   end
  82.   if UMSReadMsgInfo(account, args.num, msg.) then do
  83.     say "HDRLEN:" msg.HDRLEN
  84.     say "TXTLEN:" msg.TXTLEN
  85.     say "DATE:" msg.DATE
  86.     say "CDATE:" msg.CDATE
  87.     say "UP:" msg.UP
  88.     say "DN:" msg.DN
  89.     say "LT:" msg.LT
  90.     say "RT:" msg.RT
  91.     say "GLOBALSTAT:" FlagToStat(msg.GLOBALSTAT,"Deleted","Expired",
  92.               "Exported","Orphan","Link","HardLink","Parked","HasFile")
  93.     say "USERSTAT:" FlagToStat(msg.USERSTAT,"0","1","2","3","Archive",
  94.              "Junk","PostPoned","Selected","Old","WriteAccess",
  95.              "ReadAccess","ViewAccess","Owner","13","14","Filtered")
  96.     say "LOGINSTAT:" c2x(msg.LOGINSTAT)
  97.     say "SOFTLINK:" msg.SOFTLINK
  98.     say "HARDLINK:" msg.HARDLINK
  99.   end; else do
  100.     call CheckErr
  101.     RC = 20; call LOGOUT
  102.   end
  103. end; else do
  104.   call CheckErr
  105.   RC = 20; call LOGOUT
  106. end
  107.  
  108. /*** Final cleanup ***/
  109.  
  110. BREAK_C:
  111. BREAK_D:
  112. BREAK_E:
  113. BREAK_F:
  114.  
  115. RC = 0
  116.  
  117. ERROR:
  118. HALT:
  119. IOERR:
  120. SYNTAX:
  121.  
  122. IF RC ~= 0 THEN DO
  123.   SAY "Error: " rc errortext(rc) "Line" sigl
  124.   RC = 20
  125. END
  126.  
  127. /*** Logout ***/
  128.  
  129. LOGOUT:
  130.  
  131. if account ~= 0 then do
  132.   call UMSLogout(account)
  133.   account = 0
  134. end
  135.  
  136. exit RC
  137.  
  138. /*** Support ***/
  139.  
  140. CheckErr: procedure expose account
  141.   err = UMSErrNum(account)
  142.   if err ~= 0 then do
  143.     say "UMS Error #" || err || ": " || UMSErrTxt(account)
  144.   end
  145. return
  146.  
  147. FlagToStat: PROCEDURE
  148.   flags = arg(1)
  149.   status = '';
  150.   do i = 0 to arg()
  151.     if BITTST(flags,i) then status = status arg(i+1)
  152.   end;
  153. return status
  154.